﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinForm
{
    public partial class NhapHangForm : Form
    {
        public NhapHangForm()
        {
            InitializeComponent();
        }
        private List<Library.BIZ.SanPhamBIZ> listsp = new List<Library.BIZ.SanPhamBIZ>();
        private long tongtien = 0;
        private Library.BIZ.HoaDonNhapBIZ hoadon;
        private Library.BIZ.ChiTietHoaDonNhapBIZ chitiet;
        private List<Library.BIZ.ChiTietHoaDonNhapBIZ> listchitiet = new List<Library.BIZ.ChiTietHoaDonNhapBIZ>();
        private bool f;
        private void NhapHangForm_Load(object sender, EventArgs e)
        {

            label1.Text += " " + DateTime.Now.ToShortDateString();
            label2.Text += " " + 0;
            listsp = Library.DAL.SanPhamDAL.FindAll(null, null);
            System.Windows.Forms.DataGridViewComboBoxColumn col1 = new DataGridViewComboBoxColumn();
            col1.HeaderText = "Sản phẩm";
            col1.Name = "col1";
            col1.Width = 250;
            foreach (Library.BIZ.SanPhamBIZ i in listsp)
            {
                col1.Items.Add(i.ID + " | " + i.MaSP + " | " + i.TenSP);
            }
            dataGridView1.Columns.Add(col1);

            System.Windows.Forms.DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();
            col2.HeaderText = "Đơn giá";
            col2.Name = "col2";
            dataGridView1.Columns.Add(col2);

            System.Windows.Forms.DataGridViewTextBoxColumn col3 = new DataGridViewTextBoxColumn();
            col3.HeaderText = "Số lượng";
            col3.Name = "col3";
            dataGridView1.Columns.Add(col3);

            System.Windows.Forms.DataGridViewTextBoxColumn col4 = new DataGridViewTextBoxColumn();
            col4.HeaderText = "Thành tiền";
            col4.Name = "col4";
            col4.ReadOnly = true;
            dataGridView1.Columns.Add(col4);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            f = false; 
            int n = dataGridView1.RowCount - 1;
            long dongia = 0;
            int soluong = 0;
            long result;
            tongtien = 0;

            hoadon = new Library.BIZ.HoaDonNhapBIZ();
            listchitiet = new List<Library.BIZ.ChiTietHoaDonNhapBIZ>();
            //hoadon.ChiTietHoaDonNhaps = new System.Data.Objects.DataClasses.EntityCollection<Library.DAL.ChiTietHoaDonNhap>();
            for (int i = 0; i < n; i++)
            {
                try
                {
                    string temp = dataGridView1.Rows[i].Cells[0].Value.ToString();

                }
                catch
                {
                    MessageBox.Show("Chưa chọn sản phẩm");
                    return;
                }
                try
                {
                    if (!long.TryParse(dataGridView1.Rows[i].Cells[1].Value.ToString(), out dongia))
                    {
                        MessageBox.Show("Đơn giá phải là kiểu số");
                        return;
                    }
                    if (!Int32.TryParse(dataGridView1.Rows[i].Cells[2].Value.ToString(), out soluong))
                    {
                        MessageBox.Show("Số lượng phải là kiểu số");
                        return;
                    }
                }
                catch
                {
                    MessageBox.Show("Chưa nhập đơn giá hoặc số lượng");
                    return;
                }
                
                result = soluong * dongia;
                tongtien += result;
                label2.Text = "Tổng tiền: " + tongtien;
                dataGridView1.Rows[i].Cells[3].Value = result;

                chitiet = new Library.BIZ.ChiTietHoaDonNhapBIZ();
                chitiet.DonGia = dongia;
                chitiet.SoLuong = soluong;
                chitiet.ID_SanPham = Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString().Split('|')[0]);
                listchitiet.Add(chitiet);

            }
            f = true;
            hoadon.Ngay = DateTime.Now;
            hoadon.GiaTri = tongtien;
           
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có muốn xóa", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                try
                {
                    dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
                }
                catch
                {
                    return;
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button1_Click(sender, e);
            if (!f)
            {
                return;
            }
            if (MessageBox.Show("Bạn có muốn lưu vào CSDL ?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (listchitiet.Count == 0)
                {
                    MessageBox.Show("Lỗi: danh sách sản phẩm là rỗng");
                    return;
                }
                int id = hoadon.Add();
                foreach (var i in listchitiet)
                {
                    // lấy số lượng hiện tại của sản phẩm trong chi tiết kho
                    i.ID_HoaDonNhap = id;
                    i.Add();
                    Library.BIZ.ChiTietKhoBIZ kho = new Library.BIZ.ChiTietKhoBIZ();
                    kho.Get(new Library.BIZ.SanPhamBIZ(i.ID_SanPham), DateTime.Now);

                    // lưu số lượng mới tăng thêm vào chi tiết khó
                    Library.BIZ.ChiTietKhoBIZ c = new Library.BIZ.ChiTietKhoBIZ();
                    c.SoLuong = i.SoLuong + kho.SoLuong;
                    c.ID_SanPham = i.ID_SanPham;
                    c.Ngay = DateTime.Now;
                    c.Add();

                }

                MessageBox.Show("Đã lưu");
                this.Close();
            }
        }
    }
}
